# encoding=utf-8
import re
import numpy as np
import time,random


class text_cut:
    def __init__(self, min_len = 20, step = 10, stop_list = None):
        self.min_len = min_len  # 自定义最短长度
        self.step = step  # 自定义划窗步长
        if stop_list and isinstance(stop_list, list):
            self.stop_list = stop_list  # 自定义分割标点符
        else:
            self.stop_list = ['.', '!', '|', '。', '！', '；', ';', '?', '？', ',']
        self.split_patten = '[' + ''.join(self.stop_list) + ']'

    def find_now_index(self, now_point, sum_len_list):
        for i in range(len(sum_len_list) - 1):
            if now_point >= sum_len_list[i] and now_point < sum_len_list[i + 1]:
                return i + 1
        else:
            return 0

    def cut(self, text):
        if not isinstance(text, str):
            raise TypeError
        spilt_text = re.split(self.split_patten, text)
        len_list = np.array([len(x) for x in spilt_text])
        sum_len_list = np.cumsum(len_list)
        result_list = []
        end_point = 0
        pre_index = 0
        while end_point <= sum_len_list[-1]:
            end_point += self.step
            now_index = self.find_now_index(end_point, sum_len_list)
            if np.sum(len_list[pre_index:now_index]) >= self.min_len:
                result_list.append(''.join(spilt_text[pre_index:now_index]))
                pre_index = now_index
        return result_list


def main():
    text = '都市快报讯 “二九”过完是“三九”，目前正是一年最冷的时候。有人开玩笑说，每天在户外，感觉自己像一根行走着的棒冰。浙江省气象台统计，2021年的第一个10天（1月1日至1月10日），全省平均降水量1毫米，比常年同期偏少93%；全省平均气温3.2℃，比常年同期偏低2.9℃。不仅降水偏少，而且气温偏低。在快抱App的杭友圈里，刷屏的帖子不是西湖结冰，就是家里的花缸结冰，或者挂在室外的衣服、毛巾冻住了。天寒地冻的日子本周还会继续吗？好消息是，杭州已经明显从“冷冻层”来到了“冷藏层”。杭州市气象台说，目前，冷空气的残余势力已经越来越弱，气温已经在缓慢回升，之所以升温慢，是因为昨天有一股弱冷空气补充影响。'
    c_ = text_cut()
    result_list = c_.cut(text)
    print(result_list)
    print([len(x) for x in result_list])


if __name__ == '__main__':
    # main()
    # localtime = time.mktime(time.localtime())
    # print(int(time.time()))
    print(random.randint(1, 10))